YOLO v5 才release沒多久,沒想到 v6、v7 連續推出,有點應接不暇,在網路上找到兩個版本:
筆者實際測試兩個專案,過程中有一些小小的心得,與大家分享。
有關理論的探討,可參閱原論文或最新的物件偵測王者 YOLOv7 介紹,本文只談實作,首先介紹如何利用現有模型進行偵測。
步驟如下:
git clone https://github.com/WongKinYiu/yolov7
下載權重檔至 yolov7 目錄,網址為 https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt 。
測試:打開終端機或cmd,輸入以下指令。
cd yolov7
python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg --view-img
執行結果會出現一秒後,自動關閉,可至 runs\detect\exp[N] 目錄找到輸出檔案。
python detect.py --weights yolov7.pt --source ./test.mp4 --view-img
效果非常好。
預設模型可偵測COCO資料集的80種類別,如果要偵測其他物件,必須自行訓練模型。筆者使用RoboFlow的海洋水生館資料集實測,內含7種動物。訓練過程發生記憶體不足的錯誤(筆者的顯卡記憶只有4GB),只好搬至Google Colab上訓練。
步驟如下:
# Download YOLOv7 repository and install requirements
!git clone https://github.com/WongKinYiu/yolov7
%cd yolov7
!pip install -r requirements.txt
from google.colab import drive
drive.mount('/content/drive')
!unzip /content/drive/MyDrive/0/Aquarium.zip -d Aquarium
!gdown "https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt"
!python train.py --batch 4 --cfg cfg/training/yolov7.yaml --img 768 1024 --epochs 55 --data ./Aquarium/data.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml --device 0
原本批量(batch)為64,在Colab還是爆掉,只好把它改小一點,缺點是訓練速度會變慢,RoboFlow建議訓練55執行週期,訓練總共耗時50分鐘。另外,海洋水生館資料集的圖檔寬高為768x1024,需在上述指令設定。
!python detect.py --weights ./runs/train/yolov7/weights/best.pt --conf 0.3 --source ./Aquarium/valid/images/IMG_2342_jpeg_jpg.rf.f36e481b4e01c2e76e0b27e494682873.jpg
執行結果偵測到6隻企鵝,參數conf為置信度門檻值,可視情況調整。
import glob
from IPython.display import Image, display
i = 0
limit = 10000 # max images to print
for imageName in glob.glob('/content/yolov7/runs/detect/exp/*.jpg'): #assuming JPG
if i < limit:
display(Image(filename=imageName))
print("\n")
i = i + 1
files.download('./runs/train/yolov7/weights/best.pt')
python detect.py --weights best.pt --conf 0.3 --source ./Aquarium/valid/images/IMG_2342_jpeg_jpg.rf.f36e481b4e01c2e76e0b27e494682873.jpg
筆者自網路抓取一些台北動物園的企鵝館圖片試試,效果並不理想,只好降低置信度門檻值,都產生誤認的情況,似乎沒有YOLO v4/v5 穩定,這次測試使用的資料集畫質不是很好,可能需要多作一些實驗,才能知分曉。另外,從 YOLO v5 起,演算法開發者均已改採PyTorch,並放棄使用Darknet架構了。
以下為工商廣告:)。
深度學習PyTorch入門到實戰應用影音課程:
PyTorch:
開發者傳授 PyTorch 秘笈
TensorFlow:
深度學習 -- 最佳入門邁向 AI 專題實戰。
我是透過Anaconda建置yolov7,並且使用與yolov4一樣的資料做訓練,且皆有使用GPU,數值上來看資料是有收斂,但拿圖片測試時卻很不準確,想請問有沒有可能建置yolov7時哪個部分沒有設置好會造成這樣的問題?
謝謝~
我也有類似的懷疑,不過實驗還不夠多,不敢斷言。應該與訓練參數無太大關係,除了 --conf 。
YOLOv7 Object Detection Paper Explanation and Inference 有針對 v4/5/7 及各種大小模型作比較,可參閱。
謝謝您,我再研究您附的網址試試看~
我後來有去詢問yolov7的專家,她告訴我可能是訓練資料缺少類似的物件
(ex:我檢測目標物為Lee_face,我需將多個其他人臉Lin's Haung's......也標註放入訓練資料中)模型才可以鑑別不同的人臉特徵
讚。
您好,我想知道yolov7的環境需求是什麼
只需 Anaconda(Python) + opencv-python + PyTorch。
pytorch的版本需求有關係嗎
感謝